<?php namespace testsacvoyage\storage;
require_once 'testsacvoyage/AbstractTest.php';
use \ArrayIterator;

require_once 'sacvoyage/storage/Gateway.php';
use sacvoyage\storage\Gateway;

require_once 'sacvoyage/storage/Writer.php';
use sacvoyage\storage\Writer;

require_once 'sacvoyage/storage/Table.php';
use sacvoyage\storage\Table;

require_once 'sacvoyage/Object.php';
use \sacvoyage\Object;



abstract class AbstractTest extends \testsacvoyage\AbstractTest {


	public function getTestDocumentSet() {
		$result=array();

		$result[0]=new Object(array(
		 	"_id"=>'newnote',
		 	"_rev"=>'1',
			"type"=> "note",
			"text"=> "Купить батон!",
			"priority"=>4,
			"tags"=>array('todo', 'купить', 'семья', 'cрочно'),
		));

		$result[1]=new Object(array(
			"_id"=>'newbook',
			"_rev"=>'1',
			"type"=> "book",
			"title"=> "Приключения Алисы в стране чудес",
			"author"=>new Object(array(
				"first"=>"Льюис",
				"last" =>"Кэрролл"
			)),
			"publication"=>new Object(array(
				"date"=>"1865-11-26",
				"publisher"=>"Macmillan"
			)),
			"tags"=>array('fiction', 'scifi', 'absurdus')
		));

		$result[2]=new Object(array(
			"_id"=>'newidea',
			"_rev"=>'1',
			"type"=> "idea",
			"text"=> "Услуга доставки молока надом (как пицца)",
			"tags"=>array('бизнес')
		));

		$result[3]=new Object(array(
		 	"_id"=>'newnote',
		 	"_rev"=>'2',
			"type"=> "note",
			"text"=> "Купить батон и хлеб. Не забыть укроп",
			"priority"=>5,
			"tags"=>array('todo', 'купить', 'семья', 'cрочно'),
		));

		$result[4]=new Object(array(
		 	"_id"=>'newtask',
		 	"_rev"=>'1',
			"type"=> "note",
			"text"=> "Купть Б.П. БНО, он будет рад",
			"priority"=>5,
			"tags"=>array('todo', 'купить', 'карьера'),
		));

		$result[5]=new Object(array(
		 	"_id"=>'newtask',
		 	"_rev"=>'2',
			"type"=> "note",
			"text"=> "Купить Б.П. БНО, он будет рад",
			"priority"=>5,
			"tags"=>array('todo', 'купить', 'карьера'),
		));

		$result[6]=new Object(array(
		 	"_id"=>'newtask',
		 	"_rev"=>'3',
			"type"=> "note",
			"text"=> "Купить Б.П. БНО, он будет рад. Не забыть про овальный БНО и космическую тухлятину",
			"priority"=>'5',
			"tags"=>array('todo', 'купить', 'карьера'),
		));

		return $result;
	}


	public function fillDatabase() {
		$this->getGateway()->query("CREATE TABLE alex_db_notes (
	_id       TEXT NOT NULL, 
	_rev      TEXT NOT NULL,
	path	    TEXT NOT NULL,
	type      SET('string', 'number', 'object', 'array', 'boolean', 'null', 'missing') NOT NULL,
	value MEDIUMTEXT, -- up to 8388608
	INDEX(_id(16)), INDEX(_rev(20)), INDEX(path(25)), INDEX(type), INDEX(value(25))
) DEFAULT CHARSET=utf8 COLLATE=utf8_bin");
		$writer=new Writer(
			new Table($this->getGateway(), 'alex_db_notes'),
			new ArrayIterator($this->getTestDocumentSet())
		);
		$writer->go();

	}

}

?>
